package com.qf.studentmanager.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebFilter(urlPatterns = "/*")

public class LoginFilter implements Filter {
    public void destroy() {
    }

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) resp;
        String requestURI = request.getRequestURI();
        if (requestURI.contains("/static")||requestURI.contains("/LoginServlet")){//在web-inf里的页面，不能直接访问，要通过servlet，所以直接放行jsp页面没有意义，要放行通过哪个servlet访问jsp。

            chain.doFilter(req, resp);
        }else {
            Object loginuser = request.getSession().getAttribute("loginUser");
            if (loginuser== null){   //有可能不是先访问indexjsp，而是想直接访问里面的资源 //有可能不是先访问indexjsp，而是想直接访问里面的资源
                response.sendRedirect("/sm/LoginServlet");//没有登录，session没有东西，就可以用重定向。没必要用转发
            }else {
                chain.doFilter(request, response);  //已经有用户登录了，但session里的和服务器的是不是同一个就暂时无判断。因为还没学到
            }    //这里如果有用户，通过就去/adminserlvett 在index。jsp 成功后的回调函数从定向去/admin
        }
    }

    public void init(FilterConfig config) throws ServletException {

    }

}
